1、不同变化赛题数据:袁记短视频热门业务教程网
已知x个歌曲演员在阿里音乐上的歌手用户记录数据(2015年03月01日-2015年08月30日)
预测这x个演员在以后的2个月(2015年09月01日-2015年10月30日),共60天内每日的趋势拼多多天天领红包助力浏览量。
选手递交表:一行记录某个演员某天的大需浏览量
2、赛制介绍
赛事共分为海选,注意决赛2个环节,问题各给1个月时间,不同变化每日定点递交一次结果,歌手线上评分。趋势
每位环节的大需最后7天时间会切换数据,重新评分排行,注意借此分数作为该环节的问题最后得分。
赛后思路整理
1从图入手:
查看规律与趋势
2提出问题:
为何会出现非常高的不同变化浏览量?
是否有一定的节假日工作日规律?
不同歌手建模还是单独歌手建模或则歌曲建模?
不同歌手趋势是否相同?
3解决问题
为何会出现非常高的浏览量?--发觉两种情况:1有人刷单2有新曲发布
是否有一定的节假日工作日规律?--去除特殊情况,大致有周期性节假日特点,歌手周末日浏览量会比工作日低
不同歌手建模还是趋势单独歌手建模或则歌曲建模?--不同对象的建模须要实际结果来指导
不同歌手趋势是否相同?--不同歌手趋势变化大,须要分开不同趋势预测
4预测过程
1、利用ODPSSQL进行了数据清洗、预处理-删掉掉了觉得是异常的刷单等噪音数据(这个特别有效)
2、刻画数据的节假日与周期性特征—使用了stl分解预测
3、刻画数据的近来的浏览趋势—使用一阶指数平滑预测(训练数据一定得选好)-歌曲建模最好
4、使用组合模型
5、针对预测偏差进行模型参数修正-训练集的修正
6、针对预测偏差的个体进行剖析总结出模型的缺陷(对近来有新曲的歌手预测不准)-测试集选的34有一定的指导意义,和线上不完全一致
7、针对模型的缺陷选择合适的模型去解决该问题(拟合近来有新曲的歌手的浏览量增长到稳定的趋势)
8、针对模型的缺陷-对于近来有新曲浏览的歌手,借助去噪音平滑,融合平滑后数据的调和平均数。
二、分析思路
1、分析评分指标
递交结果的最终评分是根据F值估算的,从估算公式来看F是由每位演员的评分相乘得到的,每位演员的拼多多天天领红包助力得分是由归一化残差(sigma)和(phi)相加得到的。
其中(phi)是当前演员的每日实际浏览量相乘开根号得到的,每位演员的参数(phi)有且只有一个固定值,它的大小取决于每位演员的60天浏览量总和值,当某个演员的总浏览量较大时,(phi)就大,F也就变大了,由此可知:60天总浏览量越大的演员,预测越准,评分会越高,这是个快速提分的方式。
从公式来看参数(sigma)是由某演员递交的每日浏览量与实际浏览量的差值减去实际浏览量,对该值平方后取60天的平均值,开根号得到的。这个参数反应了递交结果S与实际浏览量T之间的差别。差越小,预测越精准,(1-(sigma))(sigma)越大,F就大。而当差过大超过了实际浏览量T,此时(sigma)>1,(1-(sigma))为正数,此时对该演员评分为负,综合累加的F值会更小。由此可知,若预测中存在某个演员结果极端不准的情况,会使评分F升高得更多,因而也要保证所有演员的平均预测确切性。即尽量保持平稳的值,突发值很容易使结果变差。
2、初探规律
依照题目要求,可以确定这是一个回归预测类题目,已知前6个月歌曲演员及其用户记录,预测后两个月每日的演员浏览量值。
建模的流程是:
预处理-->提取特点并筛选-->模型(
多个自变量预测一个连续因变量值)-->预测-->评估
初探数据规律,是为了提取重要特点作为后续建模的备选样本变量。
开脑洞,研究数据:
实验结果发觉:
1、用距离预测时间近来的时间段作为预测值是比较理想的方式,因而在海选时尝试画出50演员在8月内的浏览量取值箱形图。如下,可以看见每位演员各自8月每日浏览量数值,可以从图中分辨高浏览量的演员和通常浏览量的演员。依据评分指标,若能将浏览量越大的演员预测越准,评分会提高。因而很显著要对高浏览量的演员序列多加关注,同时应当进一步研究演员序列的分类方式。
2、如下画出按性别和语言分类的8月演员浏览量取值箱形图,以及对应类别演员数据量的柱状图,因为有些演员的不同歌曲语言不同,因而这儿的语言类别是根据演员最常用的歌曲语言做分类。从图中简略判定性别为3的演员浏览量最低,语言1,4,11的演员的每日浏览量较高。
如下是根据8月30日的每位演员的浏览量值,以语言分类为横座标,颜色值分辨演员性别,发觉性别为3的演员浏览量并不一定最低,而语言为1,4,11的演员浏览量满足8月浏览量相对较高,或则其高低浏览量差别较大的数据规律。于是可以尝试按语言将演员分类,复赛时尝试将Language=1,4,11定义高浏览量密集区,对这21个演员做细致研究,剩余29个演员直接用0830作为预测值。在这21演员中选购出重点研究演员,其满足要不是数值比较高,要不是分布比较稳定的时间序列规律,最后筛选了13个演员高浏览量演员研究预测。
如图是Language=1,4,11的演员对应的8月密度曲线,可以看出Language=4,11时密度曲线有2座波峰如何播放量上十万,而1的时侯则以一波峰为主,两侧有大量尾巴。这种信息可以作为分辨高浏览量演员和普通演员的边界。
3、论坛和群里有人研究gmt_create每小时的用户记录,但是并未找到显著规律。但查看总体演员的周浏览量,确实存在着周期规律。以决赛时100演员最高浏览量为例,如下是其7、8月时序图,不仅7月初(7月7日)前,然后基本是平稳的。
按每周7天估算每月平均浏览量如下,可以发觉这个分布规律与工作节假日规律相关
依照之前群友提供的听歌年纪分布,用户在25到31岁所占比重最大,这类人大部份是下班族,为此每日听歌习惯就是和下班习惯挂钩,基本符合如下下班族规律:
按照上图,因为大部份人听歌是拿来放松的,也就是说最疲劳的时侯(周日)最须要放松,此时听歌人数激增,而周6、7节假日相对放松活动选择好多,听歌人数反倒不多。由此可以根据工作日和节假日来分辨,很显著7、8月每位月都是节假日要比工作日低一些:
在决赛时,演员种类较多,不同演员的周期规律就会影响时间序列结果。因而可以根据周期规律作为演员的分类根据。
4、观察publish_time在2015年3月到8月的内对应的演员时间序列图象,确实在该日期点附近存在起伏或则突增。并且因为在2015年9、10月的publish_time记录较少,而这些突增现象不好测度,因而暂不考虑。按照publish_time可以发觉有的演员每晚会更新,这类演员比较活跃,时间序列起伏显著;有的演员早已停更了,停更的演员时间序列就平稳的。借此也可以作为演员分类根据。
官网给出song_init_plays收录的音乐大小不准如何浏览量上十万,浏览量只是一个参考,是3月1号之前的统计,因而暂时不用。
3、基础模型
建模早期,主要是集中在预处理数据和基础模型的构建。
预处理-->提取特点并筛选-->模型(多个自变量预测一个连续因变量值)-->预测-->评估
3.1预处理
3σ准则:它是先假定一组检查数据只富含随机偏差,对其进行估算处理得到标准误差,按一定几率确定一个区间,觉得凡超过这个区间的偏差,就不属于随机偏差而是粗大偏差,富含该偏差的数据应给以剔除。3σ原则为:
由于演员和用户数据是随机抽样,且数据量较大,大部份演员时间序列符合正态分布的密度曲线,下是部份演员8月每日浏览量的密度曲线。我们就根据2倍标准差(SD)的方式简略的剔除数据。
但这些预测结果也并不一定完全正确,由于前提假定需满足正态分布。观察如下的演员浏览量并不一定存在有异常数据,并且用2sd数据剔除异常后,在第0天附近的较低的浏览量将会被剔除掉。
其次,若回归模型中以时间作为变量,剔除掉的空缺时间数据须要被弥补,如下所示:
3.2构建基础模型
建模早期,按照规律:用距离预测时间较近的时间段作为预测值比较确切。
3.3线上线下评估
不仅每晚10点的线上递交评分,线下测试评分可以辅助预测建模结果。依据评分指标,在线下以3月到6月数据为测试集,以7、8月演员浏览量作为结果集,估算线下评分。但按照实际测评结果,不同模型下线上线下测评结果有好多出入。
三、分类与预测
3.1分类
按照规律,可以根据用户,演员分别进行分类
1)按用户分类
可以看见用户两级分化,一部份用户的浏览量非常的小,不到50;另一部份特征的大,超过150。由此考虑对演员的用户分类为关注用户和随机用户2类。设n=35,此时总用户人数是12,7135,通常用户a有12,0375,关注用户b有6760个,而此时通常用户a总浏览量61,7199;关注用户b总浏览量为53,6210,2类用户的浏览量值刚好接近总浏览量的一半。这说明通常用户和关注用户对演员的浏览量的取值贡献都很重要。如图是演员每日的浏览量(黑线),通常用户a(蓝线)和关注用户b(红线)的浏览量,其中绿色圈圈显著见到两类用户将原本混杂在一起的总浏览量序列时间规律区别开来。从图中可以看出不同的用户点播趋势是不同的:通常用户上升,关注用户增长。
进一步剖析,按照公式:
演员当天浏览量=演员当天用户数*当天用户平均点播量
分别研究演员每日用户平均浏览量和每日点播用户数
从以上规律总结,可以将2类用户的每日浏览量分解为每日平均用户点播量和每日用户人数的乘积,但是大致符合以下规律:
由此挖掘出一个规律是:
*1、关注用户的每日平均浏览量(b1)和通常用户的每日用户人数(a2),把2个时序分开做线性回归,a1和b2用均值取代(平稳序列),再代入公式:该play=a1a2+b1*b2
2、周期,从每日用户人数中获取。
**但因为时间限制以及当时知识能力限制,并未再深入研究,后续看了联赛答辩PPT后发觉这是有可行性的方式,可以深入研究。
2)按演员分类
在决赛中,我们是按照每位演员8月浏览量均值画出散点图,可以很清晰的发觉分类分界线是15000,将其分为2类:高浏览量演员和低浏览量演员,同时以8月均值作为60天每晚的实际浏览量,用评分公式估算完全预测确切时F值为64296.57135,其中高浏览量演员F总和为31413.58217,低浏览量演员F为32882.98918,刚好是总F值的一半,说明这2类演员的评分都不可忽视。
这些分类过分简略,学习了top5答辩模型后发觉,须要做愈发细致的分类处理,才能有好的结果。
3.2建模
复赛是在线下,因而可以借助模型软件尝试较多种模型,建模方式有:
多元线性回归(橘线)在一些周期性规律强烈,趋势较为平稳的时序下是不错的选择,如右图所示,其中自变量由连续变量天数,每周第几天,每月第几天,每季第几天,特殊天数等时间规律的虚拟变量组成。
但是在线下可以结合AR时序模型修正回归模型(蓝线),如图所示:
但线性回归并不适用于所有演员序列,如图所示,这种预测结果误差过大。
线上评分结果否认,即使如下所示的预测结果也会降分,恐怕该趋势最后在某一处是趋向平稳了,因而不能单纯对所有演员使用此模型拟合,仍须要对演员序列做更细致的界定类别
因而转而研究演员时间序列的规律,如图是按浏览量从高究竟排序前20名演员时间序列,蓝线是以8月下半月的中值作为y值所画直线,红线是由每位月的均值组成的分段函数,经过观察,时序曲线大致分为
大赛曾尝试对时间序列用形状,分维数,加权边长等特点结合月季环比下降量和下降率对1000条演员序列进行降维,但是疗效并不挺好,大部份序列聚在一类里,并不能突出以上分类方式。
因为时间,平台,以及自身知识的阻碍,最终以规则模型居多,结合部份多元线性回归模型作为最好的递交结果。大赛得分:493919,排行84/500
四、总结
第一次打赛事,边学边比,队友也是在赛事中结识认识的。对我来说是一次挑战,但也确实获得了不少经验教训。尤其是在赛后群里的交流以及8月的精彩答辩,都让我受益颇丰。在这儿总结3点经验:
1、化简思路,从最简单的做起,模型不是一蹴而成,是在基础模型上一步步精细化加工得到的。例如,联赛中最初有好多赛友用了复杂的模型预测60天每晚的结果,但是疗效却都没有单点规则取值好。这道题最精典的预测方法是将60天的预测通分为单点的预测,这可以依据公式推论,不仅规则方式,还可以进一步因此构建复杂模型,如第13名的赛友的滑窗方式。
2、深入挖掘,必须细化分类,如图是冠军答辩模型,由此可见,大神是对数据业务做了细致的分类后再一步步提升分数的。
3、对于这些实际上不完全正态分布数据的一个处理方法:大数处罚的方式:log变换
赛后有群友向我们科普、几乎任何模型,或则任何基于平均值的规则,都早已假定目标服从正态分布,假如目标不服从正态,做log转换会让它更接近正态,由此提分不少。
除此,许多人对评估指标做了深入的物理推到研究,你们各显高招,虽然思路不同,虽然只要坚持细钻下去,总会有结果的。而我们团队对于数据的认识还太过粗糙,应高去做进一步精细化思索。
袁记短视频热门业务教程网